\chapter{Development Conventions}

We agreed on a set of conventions that you should apply to when you
contribute to the development.

\section{Naming conventions}

This section lists some naming conventions used throughout the source
code.

\begin{itemize}

\item{Class Object Files}

The implementation of zeitgeist class object files in contained in a
separate C++ file with a \texttt{\_c} prefix, see section
\ref{sec:classobj}. A class called \texttt{simple} has it's class object
implementation in the file \texttt{simple\_c.cpp}

\item{Bundle Registration}

The C++ implementation file that registers classes contained in a
zeitgeist bundle to the calling core is called \texttt{export.cpp},
see section \ref{sec:regobj}

\item{Function Names}

Ruby functions start with a lower letter, C++ functions with a capital
letter

\item{Class Names}

Common well known service class instances are called servers and are
installed below the \texttt{/sys/server/} path in the zeitgeist
hierarchy. The script service implementation for example is called
\texttt{ScriptServer} and is installed ad \texttt{/sys/server/script}.

\end{itemize}

\section{CVS Tagging}

Developing and testing an new feature of Simspark is usually done on a
separate CVS branch. We implemented the following convention to tag
the branch and trunk before and after merging and branching takes
place:

Before branching off the trunk is tagged \texttt{BRANCHNAME\_base} in
order to mark the last CVS state before the branch is started.

Each time before a branch is merged back to the trunk the trunk ist tagged 
\texttt{BRANCHNAME\_premergeN}. The value \texttt{N} increases with each separate merge. 
After the branch is merged the trunk is tagged
\texttt{BRANCHNAME\_postmergeN} and the merged branched is tagged
\texttt{BRANCHNAME\_mergedN}

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "user-manual"
%%% End: 
